
<!DOCTYPE html>
<html lang="zh-CN" class="app">
	
<!-- Mirrored from easp.jswwl.com/?api/Easp.Db.Exec by HTTrack Website Copier/3.x [XR&CO'2014], Sat, 13 Nov 2021 05:16:55 GMT -->
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=UTF-8" /><!-- /Added by HTTrack -->
<head>
		<meta charset="utf-8" />
		<title>Easp.Db.Exec - EasyASP API 文档</title>
		<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
		<link href="../cdn.bootcss.com/bootstrap/3.1.0/css/bootstrap.min.css" rel="stylesheet">
		<link href="../cdn.bootcss.com/font-awesome/4.6.2/css/font-awesome.min.css" rel="stylesheet">		<link href="../cdn.bootcss.com/prettify/r298/prettify.min.css" rel="stylesheet">
		<link rel="stylesheet" href="inc/css/animate.css" type="text/css" />
		<link rel="stylesheet" href="inc/css/simple-line-icons.css" type="text/css" />
		<link rel="stylesheet" href="inc/css/font.css" type="text/css" />
		<link rel="stylesheet" href="inc/css/app.css" type="text/css" />
		<link rel="stylesheet" href="inc/editor/css/editormd.preview.min.css" />
		<!--<link href='http://api.youziku.com/webfont/CSS/57358c19f629d8086c49377f' rel='stylesheet' type='text/css' />-->
		<!--[if lt IE 9]>
			<script src="inc/js/ie/html5shiv.js"></script>
			<script src="inc/js/ie/respond.min.js"></script>
			<script src="inc/js/ie/excanvas.js"></script>
		<![endif]-->
	</head>
	<body>
		<section class="vbox">
			<header class="bg-white-only header header-md navbar navbar-fixed-top-xs">
	<div class="navbar-header aside bg-info dk">
		<a class="btn btn-link visible-xs" data-toggle="class:nav-off-screen,open" data-target="#nav,html"> <i class="icon-list"></i></a>
		<a href="index.html" class="navbar-brand text-lt"> <img src="inc/images/logo.png" alt="."> <span class="hidden-nav-xs m-l-sm english">EasyASP</span></a>
	</div>
	<ul class="nav navbar-nav hidden-xs">
		<li>
			<a href="#nav,.navbar-header" data-toggle="class:nav-xs,nav-xs" class="text-muted"> <i class="fa fa-dedent text"></i><i class="fa fa-indent text-active"></i></a>
		</li>
	</ul>
	<!--<form class="navbar-form navbar-left input-s-lg m-t m-l-n-xs hidden-xs" role="search">
		<div class="form-group">
			<div class="input-group">
				<span class="input-group-btn">
					<button type="button" class="btn btn-sm bg-white btn-icon rounded"><i class="fa fa-search"></i></button>
				</span>
				<input type="text" class="form-control input-sm no-border rounded" id="search" placeholder="Search API">
			</div>
		</div>
	</form>-->
	<ul class="nav nav-pills pull-right topnav hidden-xs">
		<li role="presentation"><a href="http://www.easyasp.cn/" target="_blank">EASP官网</a></li>
		<li role="presentation"><a href="http://www.easyasp.cn/downloads" target="_blank">下载</a></li>
		<li role="presentation"><a href="http://www.easyasp.cn/tutorials" target="_blank">教程</a></li>
		<li role="presentation" class="active"><a href="javascript:;">API文档</a></li>
		<li role="presentation"><a href="http://www.easyasp.cn/plugins" target="_blank">插件</a></li>
		<li role="presentation"><a href="http://bbs.easyasp.cn/" target="_blank">论坛</a></li>
		<li role="presentation"><a href="http://www.easyasp.cn/donate" target="_blank">捐赠</a></li>
	</ul>
</header>
			<section>
				<section class="hbox stretch">
					
<aside class="bg-dark dk aside hidden-print" id="nav">
	<section class="vbox">
		<section class="w-f-md scrollable">
			<div class="slim-scroll" data-height="auto" data-disable-fade-out="true" data-distance="0" data-size="10px" data-railOpacity="0.2">
				<nav class="nav-primary hidden-xs">
					<ul class="nav" data-ride="collapse">
						<li class="hidden-nav-xs padder m-t m-b-sm text-xs text-muted"></li>
						<li class=""><a href="index368f.html?api/Easp.BasePath" class="auto"><i class="fa-leaf fa"></i><span>基础公共函数</span></a></li>
						<li class="">
							<a href="#" class="auto"><span class="pull-right text-muted"><i class="fa fa-angle-left text"></i><i class="fa fa-angle-down text-active"></i></span><i class="fa-font fa"></i><span>字符串处理</span></a>
							<ul class="nav dk text-sm">
								<li class=""><a href="index19fa.html?api/Easp.Str.EncodeJsonUnicode" class="auto"> <i class="fa fa-angle-right text-xs"></i><span>字符串处理</span></a></li>
								<li class=""><a href="index843b.html?api/StringBuilder.NewLine" class="auto"> <i class="fa fa-angle-right text-xs"></i><span>String Builder</span></a></li>
								<li class=""><a href="indexbede.html?api/Validation.Value" class="auto"> <i class="fa fa-angle-right text-xs"></i><span>表单验证</span></a></li>
							</ul>
						</li>
						<li class=""><a href="index86e2.html?api/Easp.Date.Format" class="auto"><i class="fa-calendar fa"></i><span>日期处理</span></a></li>
						<li class=""><a href="index2520.html?api/Easp.Error.E" class="auto"><i class="fa-bug fa"></i><span>异常处理</span></a></li>
						<li class=""><a href="index3c88.html?api/Easp.Console.Enable" class="auto"><i class="fa-stethoscope fa"></i><span>控制台调试</span></a></li>
						<li class=""><a href="index23ba.html?api/Easp.Var.Var" class="auto"><i class="fa-magic fa"></i><span>超级变量</span></a></li>
						<li class=""><a href="index6241.html?api/Easp.Db.QueryTimes" class="auto"><i class="fa-bars fa"></i><span>数据库操作</span></a></li>
						<li class="">
							<a href="#" class="auto"><span class="pull-right text-muted"><i class="fa fa-angle-left text"></i><i class="fa fa-angle-down text-active"></i></span><i class="fa-truck fa"></i><span>JSON 解析与生成</span></a>
							<ul class="nav dk text-sm">
								<li class=""><a href="index3fac.html?api/Easp.Json.EncodeUnicode" class="auto"> <i class="fa fa-angle-right text-xs"></i><span>JSON 解析与生成</span></a></li>
								<li class=""><a href="index1814.html?api/Object.Get" class="auto"> <i class="fa fa-angle-right text-xs"></i><span>JsonObject 对象</span></a></li>
								<li class=""><a href="indexd2e5.html?api/Array.Get" class="auto"> <i class="fa fa-angle-right text-xs"></i><span>JsonArray 对象</span></a></li>
							</ul>
						</li>
						<li class=""><a href="index0e2b.html?api/Easp.List.New" class="auto"><i class="fa-rocket fa"></i><span>超级数组</span></a></li>
						<li class=""><a href="index8d16.html?api/Easp.Fso.fsoName" class="auto"><i class="fa-copy fa"></i><span>文件系统处理</span></a></li>
						<li class=""><a href="index3006.html?api/Easp.Tpl.FilePath" class="auto"><i class="fa-bolt fa"></i><span>模板引擎</span></a></li>
						<li class=""><a href="indexc31d.html?api/Easp.Tar.SavePath" class="auto"><i class="fa fa-file-zip-o"></i><span>无组件压缩解压</span></a></li>
						<li class="">
							<a href="#" class="auto"><span class="pull-right text-muted"><i class="fa fa-angle-left text"></i><i class="fa fa-angle-down text-active"></i></span><i class="fa-upload fa"></i><span>无组件上传</span></a>
							<ul class="nav dk text-sm">
								<li class=""><a href="index7b7b.html?api/Easp.Upload.AllowMaxSize" class="auto"> <i class="fa fa-angle-right text-xs"></i><span>无组件上传</span></a></li>
								<li class=""><a href="index2627.html?api/File.ContentType" class="auto"> <i class="fa fa-angle-right text-xs"></i><span>文件对象</span></a></li>
							</ul>
						</li>
						<li class=""><a href="index14f8.html?api/Easp.Http.New" class="auto"><i class="icon-link icon"></i><span>远程文件处理</span></a></li>
						<li class="">
							<a href="#" class="auto"><span class="pull-right text-muted"><i class="fa fa-angle-left text"></i><i class="fa fa-angle-down text-active"></i></span><i class="fa-cloud-download fa"></i><span>缓存处理</span></a>
							<ul class="nav dk text-sm">
								<li class=""><a href="index2221.html?api/Easp.Cache.New" class="auto"> <i class="fa fa-angle-right text-xs"></i><span>缓存处理</span></a></li>
								<li class=""><a href="index99f4.html?api/Info.Expires" class="auto"> <i class="fa fa-angle-right text-xs"></i><span>缓存文件操作</span></a></li>
							</ul>
						</li>
						<li class="">
							<a href="#" class="auto"><span class="pull-right text-muted"><i class="fa fa-angle-left text"></i><i class="fa fa-angle-down text-active"></i></span><i class="fa-rss-square fa"></i><span>XML文件处理</span></a>
							<ul class="nav dk text-sm">
								<li class=""><a href="index00fb.html?api/Easp.Xml.Open" class="auto"> <i class="fa fa-angle-right text-xs"></i><span>XML文件处理</span></a></li>
								<li class=""><a href="index27f6.html?api/Node.Dom" class="auto"> <i class="fa fa-angle-right text-xs"></i><span>XML节点对象操作</span></a></li>
							</ul>
						</li>
						<li class=""><a href="index4112.html?api/Easp.Plug.Bs" class="auto"><i class="fa-plug fa"></i><span>拓展插件</span></a></li>
					</ul>
				</nav>
			</div>
		</section>
	</section>
</aside>
					<section id="content">
						<section class="vbox">
							<section class="w-f-md" id="bjax-target">
								<section class="hbox stretch">
<aside class="aside bg-light dk" id="sidebar">
	<section class="vbox animated">
		<section class="scrollable hover">
			<div class="list-group no-radius no-border no-bg auto en class-li">
<a href="index6241.html?api/Easp.Db.QueryTimes" class=" list-group-item property">Easp.Db.QueryTimes</a>
<a href="index48a7.html?api/Easp.Db.PageParam" class=" list-group-item property">Easp.Db.PageParam</a>
<a href="index80ef.html?api/Easp.Db.PageSize" class=" list-group-item property">Easp.Db.PageSize</a>
<a href="index2ff8.html?api/Easp.Db.PageRecordCount" class=" list-group-item property">Easp.Db.PageRecordCount</a>
<a href="index8e15.html?api/Easp.Db.PageCount" class=" list-group-item property">Easp.Db.PageCount</a>
<a href="index6257.html?api/Easp.Db.PageIndex" class=" list-group-item property">Easp.Db.PageIndex</a>
<a href="index4a3b.html?api/Easp.Db.PageCurrentSize" class=" list-group-item property">Easp.Db.PageCurrentSize</a>
<a href="index19da.html?api/Easp.Db.PageMinRow" class=" list-group-item property">Easp.Db.PageMinRow</a>
<a href="indexd6c1.html?api/Easp.Db.PageMaxRow" class=" list-group-item property">Easp.Db.PageMaxRow</a>
<a href="index561c.html?api/Easp.Db.InsertSeparator" class=" list-group-item property">Easp.Db.InsertSeparator</a>
<a href="index66a1.html?api/Easp.Db.DefaultConn" class=" list-group-item property">Easp.Db.DefaultConn</a>
<a href="index38fc.html?api/Easp.Db.OpenConnection" class=" list-group-item method">Easp.Db.OpenConnection</a>
<a href="indexeb3a.html?api/Easp.Db.CreateConnection" class=" list-group-item method">Easp.Db.CreateConnection</a>
<a href="index413c.html?api/Easp.Db.SetConnection" class=" list-group-item method">Easp.Db.SetConnection</a>
<a href="indexc7ef.html?api/Easp.Db.SetConn" class=" list-group-item method">Easp.Db.SetConn</a>
<a href="indexb61c.html?api/Easp.Db.GetConnection" class=" list-group-item method">Easp.Db.GetConnection</a>
<a href="index204c.html?api/Easp.Db.GetConn" class=" list-group-item method">Easp.Db.GetConn</a>
<a href="index51bc.html?api/Easp.Db.GetType" class=" list-group-item method">Easp.Db.GetType</a>
<a href="index8ccd.html?api/Easp.Db.Type" class=" list-group-item method">Easp.Db.Type</a>
<a href="indexcb8f.html?api/Easp.Db.GetVersion" class=" list-group-item method">Easp.Db.GetVersion</a>
<a href="index30db.html?api/Easp.Db.Version" class=" list-group-item method">Easp.Db.Version</a>
<a href="index7e2a.html?api/Easp.Db.GetTypeVersion" class=" list-group-item method">Easp.Db.GetTypeVersion</a>
<a href="index1c5a.html?api/Easp.Db.TypeVersion" class=" list-group-item method">Easp.Db.TypeVersion</a>
<a href="index2db1.html?api/Easp.Db.ToSql" class=" list-group-item method">Easp.Db.ToSql</a>
<a href="index2671.html?api/Easp.Db.ToSqlBatch" class=" list-group-item method">Easp.Db.ToSqlBatch</a>
<a href="index86e2-2.html?api/Easp.Db.Execute" class=" list-group-item method">Easp.Db.Execute</a>
<a href="index1d58.html?api/Easp.Db.Exec" class="active list-group-item method">Easp.Db.Exec</a>
<a href="index22c7.html?api/Easp.Db.Query" class=" list-group-item method">Easp.Db.Query</a>
<a href="index0b05.html?api/Easp.Db.ExecuteBatch" class=" list-group-item method">Easp.Db.ExecuteBatch</a>
<a href="index5d8a.html?api/Easp.Db.ExecBatch" class=" list-group-item method">Easp.Db.ExecBatch</a>
<a href="index36ff.html?api/Easp.Db.Select" class=" list-group-item method">Easp.Db.Select</a>
<a href="index1c53.html?api/Easp.Db.Sel" class=" list-group-item method">Easp.Db.Sel</a>
<a href="indexac9c.html?api/Easp.Db.GetRecordSet" class=" list-group-item method">Easp.Db.GetRecordSet</a>
<a href="index5781.html?api/Easp.Db.GetRS" class=" list-group-item method">Easp.Db.GetRS</a>
<a href="indexba70.html?api/Easp.Db.Pager" class=" list-group-item method">Easp.Db.Pager</a>
<a href="indexe4d5.html?api/Easp.Db.SetPager" class=" list-group-item method">Easp.Db.SetPager</a>
<a href="index3fc0.html?api/Easp.Db.GetPager" class=" list-group-item method">Easp.Db.GetPager</a>
<a href="indexbc08.html?api/Easp.Db.Insert" class=" list-group-item method">Easp.Db.Insert</a>
<a href="index97c9.html?api/Easp.Db.Ins" class=" list-group-item method">Easp.Db.Ins</a>
<a href="index2a3f.html?api/Easp.Db.InsertBatch" class=" list-group-item method">Easp.Db.InsertBatch</a>
<a href="indexaa20.html?api/Easp.Db.InsBatch" class=" list-group-item method">Easp.Db.InsBatch</a>
<a href="index30d3.html?api/Easp.Db.Delete" class=" list-group-item method">Easp.Db.Delete</a>
<a href="indexfcc5.html?api/Easp.Db.Del" class=" list-group-item method">Easp.Db.Del</a>
<a href="index1f00.html?api/Easp.Db.DeleteBatch" class=" list-group-item method">Easp.Db.DeleteBatch</a>
<a href="index4361.html?api/Easp.Db.DelBatch" class=" list-group-item method">Easp.Db.DelBatch</a>
<a href="indexc1d5.html?api/Easp.Db.Update" class=" list-group-item method">Easp.Db.Update</a>
<a href="index90c9.html?api/Easp.Db.Upd" class=" list-group-item method">Easp.Db.Upd</a>
<a href="index640f.html?api/Easp.Db.UpdateBatch" class=" list-group-item method">Easp.Db.UpdateBatch</a>
<a href="index2eaf.html?api/Easp.Db.UpdBatch" class=" list-group-item method">Easp.Db.UpdBatch</a>
<a href="index4d99.html?api/Easp.Db.Close" class=" list-group-item method">Easp.Db.Close</a>
<a href="indexba15.html?api/Easp.Db.BeginTrans" class=" list-group-item method">Easp.Db.BeginTrans</a>
<a href="index266e.html?api/Easp.Db.RollbackTrans" class=" list-group-item method">Easp.Db.RollbackTrans</a>
<a href="indexea00.html?api/Easp.Db.CommitTrans" class=" list-group-item method">Easp.Db.CommitTrans</a>
<a href="index494b.html?api/Easp.Db.Begin" class=" list-group-item method">Easp.Db.Begin</a>
<a href="index3218.html?api/Easp.Db.Rollback" class=" list-group-item method">Easp.Db.Rollback</a>
<a href="indexa977.html?api/Easp.Db.Commit" class=" list-group-item method">Easp.Db.Commit</a>

			</div>
		</section>
	</section>
</aside>
									<section id="content">
										<section class="vbox">
											<section class="w-f-md" id="bjax-target">
												<section class="hbox stretch">
													<aside class="col-lg-6 b-l">

<section class="vbox">

<section class="scrollable padder-v hover m-t m-b" id="test-editormd-view">

<textarea id="append-test" style="display:none;">
## Easp.Db.Exec
方法，用默认数据库连接执行SQL语句,返回记录集(R)或受影响的行数(CUD)
<h4 class="font-thin"><label class="label bg-info text-white"><i class="fa fa-code"></i> 语法</label></h4>

```asp
Easp.Db.Exec(sql)
```
<h4 class="font-thin"><label class="label bg-info text-white"><i class="fa fa-cogs"></i> 参数</label></h4>

|参数|类型|说明
| ------------ | ------------ |
|sql|String(字符串)|要执行的SQL语句
<h4 class="font-thin"><label class="label bg-info text-white"><i class="fa fa-reply"></i> 返回值</label></h4>

|类型|说明
| ------------ | ------------ |
|Object(ASP对象) 或 Integer(整数)| `Select` 时返回记录集，增改删时返回受影响的行数
<h4 class="font-thin"><label class="label bg-info text-white"><i class="fa fa-info-circle"></i> 说明</label></h4>

用默认数据库连接执行SQL语句,返回记录集(R)或受影响的行数(CUD)。
<h4 class="font-thin"><label class="label bg-info text-white"><i class="fa fa-plug"></i> 示例</label></h4>

```asp
Easp.Db.SetConn "ACCESS", "/db/db.mdb", ""
Easp.Var("name") = "刘六"
Easp.Var("age") = 36
Easp.Var("sex") = "女"
Easp.WN Easp.Db.Exec("insert into easp_test (id, name, age, sex) values ({easp.newid}, {name}, {age}, {sex})")
```
浏览器返回：
```asp
1
```
<h4 class="font-thin"><label class="label bg-info text-white"><i class="fa fa-tag"></i> 应用场景 & 使用心得</label></h4>

EasyASP v3 `推荐` 所有的读增改删都通过输入完整的 `SQL` 语句来操作，你可以用下面这两个方法，它们略有不同：
```asp
Easp.Db.Query(sql)
Easp.Db.Exec(sql)
```
而 `Easp.Db.Exec` 还有一个对应的操作附加数据库的方法：
```asp
Easp.Db.Execute(conn, sql)
```
它们的区别是：

|方法|查询返回|增改删返回|
| ------------ | ------------ |
|`Easp.Db.Query`|记录集|True为成功 False为失败
|`Easp.Db.Exec`|记录集|受影响行数

此外，`Easp.Db.Exec` 还有它对应的批量操作的方法：`Easp.Db.ExecuteBatch(conn, sql)` `Easp.Db.ExecBatch(sql)`，同样一个是操作附加数据库，一个是操作默认数据库，批量操作返回为 `所有总的影响行数`。

注：`Select` 语句不能用于批量操作。

#### 存储过程操作
EasyASP 调用存储过程的方式也是比较简单的，下面四种方式都是可以的：
```asp
Set proc = Easp.Db.Query("call 存储过程名 {参数1} [,{参数2}] [,{@输出参数}] [,{@@输入输出参数}]")
Set proc = Easp.Db.Query("exec 存储过程名 {参数1} [,{参数2}] [,{@输出参数}] [,{@@输入输出参数}]")
Set proc = Easp.Db.Exec("call 存储过程名 {参数1} [,{参数2}] [,{@输出参数}] [,{@@输入输出参数}]")
Set proc = Easp.Db.Exec("exec 存储过程名 {参数1} [,{参数2}] [,{@输出参数}] [,{@@输入输出参数}]")
```
如你所见，参数中的 `输入参数` 用 `{参数}` 的形式， `输出参数` 用 `{@参数}` 的形式， `既是输入参数又是输出参数` 的用 `{@@参数}` 表示。参数的赋值，当然还是用的是超级变量。这几个方法会在执行存储过程后返回一个字典对象，这个字典对象固定包含以下4个键值：
`rows` - 受影响的行数
`return` - 返回值
`out` - 输出参数（字典对象），可用("out")("@参数名")调用
`rs` - 记录集对象（如果不返回记录集则该项值为Null）
下面用一个完整的例子看一下使用方法：
```asp
Dim proc, rs
Easp.Var("uid") = Easp.NewID()
Easp.Var("uname") = "coldstone"
Easp.Var("dname") = "冷石"
Easp.Var("upass") = Easp("md5")("123456")
Set proc = Easp.Db.Query("exec sp_new_user {uid}, {uname}, {dname}, {upass}, {@usercount}")
'假设存储过程 sp_new_user 成功会返回值1，失败返回0，并且选取本条新增的记录和一个输出参数 @usercount'
Easp.Println "返回值::" & proc("return")
Easp.Println "总人数::" & proc("out")("@usercount")
'如果返回记录集不为空'
If Not IsNull(proc("rs")) Then
  Set rs = proc("rs")
  Easp.Println "新增用户ID为:" & rs("uid")
  Easp.Db.Close(rs)
End If
Set proc = Nothing
```
如果要返回的是多个记录集，也可以用下面的方法获取下一个记录集对象：
```asp
Set rs1 = Easp.Db.NextRS(rs)
```

#### 参数化查询

我们知道在一般的数据库操作中，采用参数化查询不仅可以避免数据库被注入，而且可以提升 SQL 语句执行的效率。EasyASP 的数据库操作采用了全参数化查询，并且采用了一个非常简洁的方案。为了你能有一个清晰的对比，先看看我们平时是怎么写带变量的SQL查询语句的，基本上看上去是下面这样：
```asp
f1 = "value1"
f2 = Now()
conn.execute "Insert Into table_name (field1, field2) Values ('" & f1 & "', '" & f2 & "')"
```
这里只有两个变量，如果变量有很多个，只是阅读起来就会有非常大的障碍，而且，如果数据处理不当，它还有被注入的风险。如果是取记录集，则还要先建立 ADODB.RecordSet 对象，代码会更加复杂。
再来看 EasyASP 是如何处理带变量参数的查询的，下面的例子一个是插入记录，一个是取记录集：
```asp
'插入一条新记录'
Easp.Db.Exec("Insert Into table_name (field1, field2) Values ({f1}, {f2})")
'获取记录集'
Set rs = Easp.Db.Exec("Select * From table_name Where field1 = {f1} And field2 = {f2}")
```
相信你看出来了，其中的f1和f2应该是可以用变量的条件，那么，它们的值是如何代入SQL中呢？我知道你非常想这样：
```asp
f1 = "value1"
f2 = Now()
Easp.Db.Exec("Insert Into table_name (field1, field2) Values ({f1}, {f2})")
```
但是由于 ASP 语法的限制，暂时还无法实现上面的做法，在 EasyASP 中，采用了还是非常简单的做法，`所有SQL语句中的变量用 Easp.Var("变量名") 来赋值即可`：
```asp
Easp.Var("f1") = "value1"
Easp.Var("f2") = Now()
Easp.Db.Exec("Insert Into table_name (field1, field2) Values ({f1}, {f2})")
```
这样就可以了，不再用看起来傻缺到无以复加的字符串变量和引号、& 连接符去 `中断` SQL 语句，也不用考虑参数的顺序，最重要的是，你完全可以不用去管参数是什么类型的数据（想想你平时比如忘记了在文本型字段值的两端加单引号而带来的种种噩梦吧）。`Easp.Var("变量名")` 这种用法在 EasyASP 里叫做　`超级变量`　，详细的说明请查看 [超级变量](?api/Easp.Var.Var "超级变量") 一节。这里你只需要知道，所有的 `Get/Post/ServerVariables` 值已经内置在超级变量中了，所以如果要使用这些值是不用再自己写超级变量的，直接在 `SQL` 中使用就行了！具体怎么使用这些值，请看下一节的说明。
  
但是，这里还留下几个问题：

第一，如果我想要指定参数的类型和大小怎么办？在 EasyASP 里，非常好办：
```asp
Easp.Db.Exec("Insert Into table_name (field1, field2) Values ({f1:nvarchar(100)}, {f2:datetime})")
```
看到了吧，直接在参数名后跟一个冒号，然后写入参数的类型和大小即可（大小可省略）。

第二，如果 SQL 语句中有不是参数的部分要代入变量，怎么办？什么是不是参数的部分呢，就是 SQL 语句中不是作为查询参数的部分，比如表名（表前缀）、字段名、Where条件表达式等。通常的方法是这样的：
```asp
Dim frontstr
frontstr = "field"
Easp.Db.Exec("Insert Into table_name (" & frontstr & "1, " & frontstr & "2) Values ({f1:nvarchar(100)}, {f2:datetime})")
```
很破坏阅读性有木有？所以，EasyASP 给出的解决方法是这样的，当然还是要用到超级变量：
```asp
Easp.Var("frontstr") = "field"
Easp.Db.Exec("Insert Into table_name ({=frontstr}1, {=frontstr}2) Values ({f1:nvarchar(100)}, {f2:datetime})")
```
只需要像使用不带类型和大小的参数一样使用，在参数名前面加一个等号即可，它会把超级变量的值替换到 `SQL` 语句中去。
注意：使用 `{=超级变量}` 存在注入风险，所以这个变量的值应该　`由您在程序中指定`　而不是从 `Get/Post/Cookies` 提交而来。
再写一个结合超级变量的用于模糊搜索的 SQL 语句示例，假设提交的搜索关键字参数名为 `key` (*.asp?key=新闻)：
```asp
Easp.Var("likeKey") = "%{=key}%"
Set rs = Easp.Db.Query("Select * From news Where Title Like {likeKey}")
```

第三，如果我的 SQL 语句中有 `in(…)` 这样的写法，又该怎么在 EasyASP 中写代码呢？还是那句话，So easy！
```asp
'首先，要有一个变量超级数组（也可以是QueryString/Form数组）'
Easp.Var("myArr") = Split("1 3 4 6 7") 
Call Easp.Db.Exec("delete from t where id in ({(myArr:int)})")
```
执行的语句会是 `delete from t where id in (1, 3, 4, 6, 7)`

只需要把数组超级变量用 {(变量名)} 一对括号括起来放在标签中就行啦，有数据类型的时候，和普通标签一样加在变量名后就行了，如果是字符串，也是一样的操作方式，下面的例子有点小变化，参数只做为in条件里的一部分：
```asp
Easp.Var("myArr") = Split("one,two,three", ",")
Call Easp.Db.Exec("delete from t where id in ('zero', {(myArr)}, 'four')")
```
执行的语句会是 `delete from t where id in ('zero', 'one', 'two', 'three', 'four')`

最后，再次提示一下，超级变量的功能很强大，可以让你轻松的做到不用写一行代码去读取表单提交的值就把数据插入到数据库中啦，请从 [超级变量](?api/Easp.Var.Var "超级变量") 一节中查看。
<h4 class="font-thin"><label class="label bg-info text-white"><i class="fa fa-terminal"></i> 源码解析</label></h4>

core/easp.db.asp 第 614 行：
```asp
Public Function Exec(ByVal sql)
	On Error Resume Next
	OpenConn()
	If Easp.Str.IsSame(Left(sql, 7),"select ") Or Easp.Str.IsInList("call ,exec ", Left(sql, 5)) Then
		Set Exec = ExecuteSql(o_conn, sql, 1)
	Else
		Exec = ExecuteSql(o_conn, sql, 0)
	End If
	CheckError "execute", Err, o_conn, "Exec", sql
End Function
```



</textarea>

</section>

														</section>
													</aside>
												</section>
											</section>
										</section>
									</section>
								</section>
							</section>
						</section>
					</section>
				</section>
			</section>
		</section>		
		<script src="../s3.pstatp.com/cdn/expire-1-M/jquery/3.3.1/jquery.min.js"></script>
		<script src="../s1.pstatp.com/cdn/expire-1-M/twitter-bootstrap/4.3.1/js/bootstrap.min.js"></script>
		<script src="../s2.pstatp.com/cdn/expire-1-M/jQuery-slimScroll/1.3.8/jquery.slimscroll.min.js"></script>
		<script src="../s1.pstatp.com/cdn/expire-1-M/prettify/r298/prettify.min.js"></script>
		<script src="inc/editor/lib/marked.min.js"></script>
		<script src="inc/editor/editormd.js"></script>
		<script src="inc/js/app.js"></script>
		<script src="inc/js/jquery.easysearch.js"></script>
		<script>
			
			$(function() {
				var testEditormdView;
				testEditormdView = editormd.markdownToHTML("test-editormd-view", {
					htmlDecode: "style,script,iframe",
					emoji: true,
					editorTheme : "pastel-on-dark",
					taskList: true
				});
			});
			$('input').jSearch({
				selector: 'table',
				child: 'tr > td > a',
				minValLength: 0,
				Before: function() {
					$('table tr').data('find', '');
				},
				Found: function(elem, event) {
					$(elem).parent().data('find', 'true');
					$(elem).parent().parent().show();
				},
				NotFound: function(elem, event) {
					if (!$(elem).parent().data('find'));
					$(elem).parent().parent().hide();
				},
				After: function(t) {
					if (!t.val().length) $('table tr').show();
				}
			});
var _hmt = _hmt || [];
(function() {
  var hm = document.createElement("script");
  hm.src = "../hm.baidu.com/hm3298.js?7758fff2e207d5773bc5d925a2606368";
  var s = document.getElementsByTagName("script")[0]; 
  s.parentNode.insertBefore(hm, s);
})();
		</script>
	</body>

<!-- Mirrored from easp.jswwl.com/?api/Easp.Db.Exec by HTTrack Website Copier/3.x [XR&CO'2014], Sat, 13 Nov 2021 05:16:55 GMT -->
</html>